#include <iostream>
#include <signal.h>
#include "SimpleHTTPServer.hpp"

// 全局服务器指针，用于信号处理
SimpleHTTPServer* global_server = nullptr;

// 信号处理函数 (Ctrl+C)
void signal_handler(int signal) {
    if (signal == SIGINT && global_server) {
        global_server->Stop();
        exit(0);
    }
}

int main(int argc, char* argv[]) {
    // 默认参数
    int port = 8080;
    std::string document_root = "./www";
    
    // 解析命令行参数
    for (int i = 1; i < argc; i++) {
        std::string arg = argv[i];
        if (arg == "--port" && i + 1 < argc) {
            port = std::stoi(argv[++i]);
        } else if (arg == "--root" && i + 1 < argc) {
            document_root = argv[++i];
        } else if (arg == "--help") {
            std::cout << "用法: " << argv[0] << " [选项]\n"
                      << "选项:\n"
                      << "  --port PORT    指定端口号 (默认: 8080)\n"
                      << "  --root DIR     指定文档根目录 (默认: ./www)\n"
                      << "  --help         显示此帮助信息\n"
                      << "\n示例:\n"
                      << "  " << argv[0] << " --port 9000 --root /var/www\n";
            return 0;
        }
    }
    
    // 创建服务器实例
    SimpleHTTPServer server(port, document_root);
    global_server = &server;
    
    // 设置信号处理 (优雅关闭)
    signal(SIGINT, signal_handler);
    
    // 启动服务器
    if (!server.Start()) {
        std::cerr << "服务器启动失败!" << std::endl;
        return 1;
    }
    
    return 0;
}